package com.mkh.st.admin.api.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mkh.st.admin.api.vo.RoleIdListVO;
import com.mkh.st.admin.api.vo.RoleListVO;
import com.mkh.st.common.core.constant.CommonConstants;
import com.mkh.st.common.core.constant.enums.SexEnum;
import com.mkh.st.common.core.constant.enums.UserStatusEnum;
import com.mkh.st.common.core.constant.enums.UserTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Data
@ApiModel(value = "用户信息保存对象")
public class UserSaveDTO implements Serializable {

	@ApiModelProperty(value="用户id")
	private Long userId;
	/**
	 * 用户姓名
	 */
	@ApiModelProperty(value="用户姓名")
	@NotBlank(message = "用户姓名不能为空!")
	private String username;
	/**
	 * 手机号码
	 */
	@ApiModelProperty(value="手机号码")
	@NotBlank(message = "手机号码不能为空!")
	private String phone;
	/**
	 * 性别(0-默认未知,1-男,2-女)
	 */
	@ApiModelProperty(value="性别(0-默认未知,1-男,2-女)")
	private Integer sex= SexEnum.UNKNOWN.getStatus();

	@ApiModelProperty(value="业务类型1：采购员,2：销售员,3：财务人员,4：其它")
	@NotNull(message = "业务类型不能为空!")
	private Integer userBusinessType;
	/**
	 * 有效期开始时间
	 */
	@ApiModelProperty(value="有效期开始时间")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	private LocalDateTime beginTime;
	/**
	 * 有效期结束时间
	 */
	@ApiModelProperty(value="有效期结束时间")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	private LocalDateTime endTime;
	/**
	 * 冻结标记:0未冻结1已冻结
	 */
	@ApiModelProperty(value="状态标记：1正常,2锁定,3冻结")
	private Integer normalFlag=UserStatusEnum.NORMAL.getStatus();


	@ApiModelProperty(value="备注信息")
	private String remark;

	@ApiModelProperty(value="角色id集合")
	private List<RoleIdListVO> roleList;

	/**
	 * 用户类型【00:平台用户 10:租户用户（11:供应商用户 12:客户）:】
	 */
	@ApiModelProperty(value="用户类型【10:平台用户 11:租户用户（12:供应商用户 13:客户）:】")
	private Integer userType= UserTypeEnum.TENANT_USER.getCode();

	/**
	 * 删除标记：0未删除1已删除
	 */
	@ApiModelProperty(value="删除标记：0未删除1已删除")
	private Integer delFlag= CommonConstants.NOT_DEL;

}
